package cn.tedu.seri;

import java.io.*;

/*测试序列化与反序列化
* 序列化:指把文件中的JAVA对象,永久保存在磁盘中,相当于是写出的过程
* 方向:out,用到的流是:objectOutputStream
*
* 反序列化:指把已经序列化在文件中保存的数据,读取/恢复到java程序中的过程
* 方向:in,用到的流是:ObjectInputStream*/
public class TestSerializable {
    public static void main(String[] args) {
       method1();//序列化
        method2();//反序列化
    }
    //反序列化
    private static void method2() {
        ObjectInputStream in=null;

        try {
            in=new ObjectInputStream(new FileInputStream(new File("D:\\ready\\1.txt")));

            System.out.println(in.readObject());
            System.out.println("恭喜您,反序列化成功");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("很抱歉,反序列化失败");

        }finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
    //序列化
    private static void method1() {
        ObjectOutputStream out=null;
        try{
                out=new ObjectOutputStream(new FileOutputStream(new File("D:\\ready\\1.txt")));

                Student obj=new Student("海绵宝宝",3,"大海里",'男');
                out.writeObject(obj);
                System.out.println("恭喜您!序列化成功");
        }catch(Exception e){
            e.printStackTrace();
            System.out.println("很抱歉,序列化失败");
        }finally{
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
